package com.example.myapplication

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.blankj.utilcode.util.LogUtils
import com.wakeup.sdk.ble.WeikeBleMgr
import com.wakeup.sdk.ble.ext.EventType
import com.wakeup.sdk.ble.ext.OnEventListener
import com.wakeup.sdk.ble.ext.other.MenstrualBean
import com.wakeup.sdk.ble.utils.BleUtil

/**
 * 生理周期
 */
class PhysiologyExampleActivity : AppCompatActivity() {
    private val TAG = "PhysiologyExampleActivity"


    // 使用方，生理周期 数据
    private val listModel = arrayListOf<MenstrualBean>()

    private val callback = object : OnEventListener {
        override fun onEvent(type: EventType, code: Int, data: Any?) {
            if (type == EventType.TYPE_MENSTRUAL) {
                if (data !is Int) {
                    LogUtils.i(TAG, "callback crc type not pair")
                    return
                }
                when (code) {
                    0 -> { // 上个月
                        // index 月份下标 0上个月
                        // status 状态 0表述无数据
                        WeikeBleMgr.sendMenstrualCrcResult(0, 0)
                    }

                    1 -> { // 本月
                        // index 月份下标 1 本月
                        // status 状态 1表述校验通过
                        val updateTime = System.currentTimeMillis() / 1000L // 测试使用，实则是本地最新数据的时间
                        val month = 1 // 测试使用，实则拿设备传过来的月
                        val crc =
                            BleUtil.crcTable((updateTime.toString() + month).toByteArray()) // 将数据转成字节数组
                        val flag = data != crc
                        if (flag) { // 表示数据相同 无需更新
                            WeikeBleMgr.sendMenstrual(listModel, crc)
                        } else {
                            WeikeBleMgr.sendMenstrualCrcResult(1, 1)
                        }

                    }
                    2 -> { // 下个月
                        // index 月份下标 0上个月
                        // status 状态 0表述无数据
                        WeikeBleMgr.sendMenstrualCrcResult(2, 0)
                    }
                }
            }
        }
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_physiology)
        val time = System.currentTimeMillis() / 1000
        for (index in 0..3) {
            val bean = MenstrualBean(index, time, index)
            listModel.add(bean)
        }
        // 增加生理周期的监听回调
        WeikeBleMgr.registerListener(callback, EventType.TYPE_MENSTRUAL)
    }

    override fun onDestroy() {
        super.onDestroy()
        WeikeBleMgr.unregisterListener(callback)
    }
}
